/**
 * @file Commitlint 配置文件
 * @description 专为规范化 Git 提交信息设计，验证 Git 提交信息格式，确保团队提交信息规范统一
 * @see https://www.conventionalcommits.org/zh-hans/v1.0.0/
 */

export default {
  /**
   * 继承配置
   */
  extends: ['@commitlint/config-conventional'],
  /**
   * 提交信息规则
   */
  rules: {
    // 提交类型枚举
    'type-enum': [
      2,
      'always',
      [
        'feat', // 新功能
        'fix', // 修复 bug
        'docs', // 文档
        'style', // 代码格式（不影响代码运行的变动，如空格、分号等）
        'refactor', // 重构（既不是新增功能，也不是修复 bug 的代码变动）
        'perf', // 性能优化
        'test', // 测试相关
        'chore', // 构建过程或辅助工具的变动
        'revert', // 回滚
        'build', // 构建系统或外部依赖的改动
        'ci', // CI 配置文件和脚本的修改
        'init', // 项目初始化
        'merge', // 分支合并
        'release', // 版本发布
      ],
    ],
    // 提交类型大小写
    'type-case': [2, 'always', 'lowercase'],
    // 提交类型不能为空
    'type-empty': [2, 'never'],
    // 作用域可以为空
    'scope-empty': [0],
    // 提交描述不能为空
    'subject-empty': [2, 'never'],
    // 提交描述不能以点号结尾
    'subject-full-stop': [2, 'never', '.'],
    // 提交信息最大长度
    'header-max-length': [2, 'always', 100],
  },
}
